home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / FREENET / MELL / NETLIB00 / !NetLib / netinet / h / tcp < prev    next >
Text File  |  1997-04-14  |  2KB  |  76 lines

  1. #ifndef __netinet_tcp_h
  2. #define __netinet_tcp_h
  3.  
  4. /* Freenet programmers interface - netinet/tcp.h - 23/5/95 */
  5. /* tcphdr structure made ANSI compliant - Stewart 14/04/97 */
  6.  
  7. /*
  8.  * Type of a TCP sequence number
  9.  */
  10. typedef u_long tcp_seq;
  11.  
  12. /*
  13.  * TCP header.
  14.  * Per RFC 793, September, 1981.
  15.  */
  16.  
  17. /*
  18.  * Structure of a TCP header
  19.  */
  20. struct tcphdr {
  21.   u_short th_sport;            /* Source port */
  22.   u_short th_dport;            /* Destination port */
  23.   tcp_seq th_seq;              /* Sequence number */
  24.   tcp_seq th_ack;              /* Acknowledgement number */
  25.   u_int   th_x2  : 4;          /* Unused */
  26.   u_int   th_off : 4;          /* Data offset */
  27.   u_int   th_flags : 8;        /* Flags */
  28. #define TH_FIN  0x01
  29. #define TH_SYN  0x02
  30. #define TH_RST  0x04
  31. #define TH_PUSH 0x08
  32. #define TH_ACK  0x10
  33. #define TH_URG  0x20
  34.   u_int   th_win:16;           /* Advertised window */
  35.   u_short th_sum;              /* Checksum */
  36.   u_short th_urp;              /* Urgent pointer */
  37. };
  38.  
  39.  
  40. #define    TCPOPT_EOL        0
  41. #define    TCPOPT_NOP        1
  42. #define    TCPOPT_MAXSEG        2
  43. #define TCPOLEN_MAXSEG        4
  44. #define TCPOPT_WINDOW        3
  45. #define TCPOLEN_WINDOW        3
  46. #define TCPOPT_SACK_PERMITTED    4        /* Experimental */
  47. #define TCPOLEN_SACK_PERMITTED    2
  48. #define TCPOPT_SACK        5        /* Experimental */
  49. #define TCPOPT_TIMESTAMP    8
  50. #define TCPOLEN_TIMESTAMP    10
  51. #define TCPOLEN_TSTAMP_APPA    (TCPOLEN_TIMESTAMP+2) /* appendix A */
  52.  
  53. #define TCPOPT_TSTAMP_HDR    \
  54.     (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)
  55.  
  56. /*
  57.  * Default maximum segment size for TCP.
  58.  * With an IP MSS of 576, this is 536,
  59.  * but 512 is probably more convenient.
  60.  * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)).
  61.  */
  62. #define    TCP_MSS    512
  63.  
  64. #define    TCP_MAXWIN    65535    /* largest value for (unscaled) window */
  65.  
  66. #define TCP_MAX_WINSHIFT    14    /* maximum window shift */
  67.  
  68. /*
  69.  * Options for use with [gs]etsockopt at the TCP level. First word of
  70.  * comment is data type; bool is stored in int.
  71.  */
  72. #define TCP_NODELAY 0x01       /* Don't delay send to coalesce packets */
  73. #define TCP_MAXSEG  0x02       /* Set the maximum segment size */
  74.  
  75. #endif
  76.